import java.util.HashMap;
import java.util.Map;

public class ContiguousArray {
    // 连续数组 https://leetcode.cn/problems/contiguous-array/
    public int findMaxLength(int[] nums) {
        Map<Integer,Integer> hash=new HashMap<Integer,Integer>();
        hash.put(0,-1);//默认存在一个前缀和为0的情况

        int sum=0;
        int ret=0;
        for(int i=0;i<nums.length;i++) {
            sum+=(nums[i]==0?-1:1);//计算当前位置的前缀和
            if(hash.containsKey(sum)) ret=Math.max(ret,i-hash.get(sum));
            else hash.put(sum,i);
        }
        return ret;
    }
}
